import HTTP from '@/libs/http'

class InitApi extends HTTP {
  /**
   * @description: 获取网格
   * @author cxm
   * @date 2021.04.21
   */
  gridApp({ appCode }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/grid/grid_list',
      params: { appCode }
    })
  }

  /**
   * @description: 获取网格
   * @author lsr
   * @date 2021.04.21
   */
  grid() {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/grid/grid_list'
    })
  }

  /**
   * @description: 根据网格获取巡查点
   * @author lsr
   * @date 2021.04.25
   */
  point({ gridCode }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/grid/inspection_point_list',
      params: {
        gridCode
      }
    })
  }

  /**
   * @description: 根据网格获取重点单位
   * @author lsr
   * @date 2021.04.28
   */
  company({ gridCode }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/company/company_list',
      params: {
        gridCode
      }
    })
  }

  /**
   * @description: 根据网格获取单位巡查记录详情
   * @author zlr
   * @date 2021.12.15
   */
  companyDetail({ code }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app-base/inspection/company_detail',
      params: {
        code
      }
    })
  }

  /**
   * @description: 获取重点单位巡查数量
   * @author lsr
   * @date 2021.05.20
   */
  companyCount() {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/company/count'
    })
  }

  /**
   * @description: 获取重点单位巡查数量
   * @author lsr
   * @date 2021.05.20
   */
  personCount() {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/person/count'
    })
  }
}

class GridApi extends HTTP {
  /**
   * @description: 查询网格巡查点以及巡查记录
   * @author lsr
   * @date 2021.04.21
   * @param {String} gridCode 网格编码
   * @param {String} date 日期
   */
  list({ gridCode, date }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/grid/inspection_list',
      params: {
        gridCode,
        date
      }
    })
  }

  /**
   * @description: 查询网格巡查点以及巡查记录
   * @author lsr
   * @date 2021.04.21
   * @param {String} gridCode 网格编码
   * @param {String} date 日期
   * @param {String} appCode
   */
  gridlist({ gridCode, date, appCode }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/grid/inspection_list',
      params: {
        gridCode,
        date,
        appCode
      }
    })
  }

  /**
   * @description: 人员预警列表
   * @author llx
   * @date 2021.04.21
   * @param {String} inoutTimeBegin 开始时间
   * @param {String} inoutTimeEnd 结束时间
   * @param {String} placeName 场所
   * @param {int} recordSize  起始页第几条
   * @param {int} pageSize  每页显示条数
   * @param {int} regionCode  行政区划
   *
   */
  getList({ inoutTimeBegin, inoutTimeEnd, placeName, recordSize, pageSize, regionCode }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/record/facelist',
      params: {
        inoutTimeBegin,
        inoutTimeEnd,
        placeName,
        recordSize,
        pageSize,
        regionCode
      }
    })
  }

  /**
   * @description: 查询网格巡查点以及巡查记录
   * @author lsr
   * @date 2021.04.21
   * @param {String} inspectionPointCode 巡查点编码
   * @param {String} date 查询日期
   */
  detail({ inspectionPointCode, date }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/grid/inspection_detail',
      params: {
        inspectionPointCode,
        date
      }
    })
  }

  /**
   * @description: 巡查点巡查结果上报
   * @author lsr
   * @date 2021.04.22
   * @param {String} gridCode 网格编码
   * @param {String} inspectionRecordCode 网格巡查编码
   * @param {String} inspectionPointCode 巡查点编码
   * @param {String} inspectionResult 巡查结果
   * @param {String} abnormal 异常描述
   * @param {String} imageUrl 图片
   */
  save({ gridCode, inspectionRecordCode, inspectionPointCode, inspectionResult, abnormal, imageUrl }) {
    return this.request({
      method: 'POST',
      url: '/smart/smart-app/grid/point_save',
      data: {
        gridCode,
        inspectionRecordCode,
        inspectionPointCode,
        inspectionResult,
        abnormal,
        imageUrl
      }
    })
  }

  /**
   * @description: 开始巡查
   * @author lsr
   * @date 2021.04.21
   * @param {String} gridCode 网格编码
   * @param {String} longitude 开始经度
   * @param {String} latitude 开始维度

   */
  start({ gridCode, longitude, latitude }) {
    return this.request({
      method: 'POST',
      url: '/smart/smart-app/grid/inspection_save',
      data: {
        gridCode,
        longitude,
        latitude
      }
    })
  }

  /**
   * @description: 暂停、继续、结束
   * @author lsr
   * @date 2021.04.21
   * @param {String} inspectionRecordCode 网格巡查编码
   * @param {String} type 网格巡查状态：1暂停 2继续 3结束
   * @param longitude 结束经度
   * @param latitude 结束维度
   */
  changeStatus({ inspectionRecordCode, type, longitude, latitude }) {
    return this.request({
      method: 'PUT',
      url: '/smart/smart-app/grid/inspection_update',
      data: {
        inspectionRecordCode,
        type,
        longitude,
        latitude
      }
    })
  }

  /**
   * @description: 巡查记录
   * @author lsr
   * @date 2021.04.23
   * @param {String} type 1：本周  2：30天  3：时间范围搜索
   * @param {String} gridCode 网格编码
   * @param {String} inspectionPointCode 巡查点编码
   * @param {String} startTime 开始时间
   * @param {String} endTime 结束时间
   */
  record({ type, gridCode, inspectionPointCode, startTime, endTime }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/grid/inspection_day_list',
      params: {
        type,
        gridCode,
        inspectionPointCode,
        startTime,
        endTime
      }
    })
  }
}

class CompanyApi extends HTTP {
  /**
   * @description: 查询重点单位
   * @author lsr
   * @date 2021.04.26
   * @param {String} gridCode 网格编码
   * @param {String} date 日期
   */
  list({ gridCode, date }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/company/list',
      params: {
        gridCode,
        date
      }
    })
  }

  /**
   * @description: 查询网格巡查点以及巡查记录
   * @author lsr
   * @date 2021.04.21
   * @param {String} inspectionPointCode 巡查点编码
   */
  detail({ inspectionPointCode }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/company/detail',
      params: {
        inspectionPointCode
      }
    })
  }

  /**
   * @description: 查询网格巡查点以及巡查记录
   * @author lsr
   * @date 2021.04.29
   * @param {String} code 巡查点记录编码
   */
  recordDetail({ code }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/company/record_detail',
      params: {
        code
      }
    })
  }

  /**
   * @description: 重点单位巡查结果上报
   * @author lsr
   * @date 2021.04.26
   * @param {String} gridCode 网格编码
   * @param {String} companyCode 重点单位编码
   * @param {String} inspectionResult 巡查结果
   * 存在隐患
   * @param {String} latentDangerLevel 风险级别
   * @param {String} latentDangerDetail 隐患排查存在问题及说明
   * @param {String} latentDangerProgramme 政治方案及措施
   * @param {String} plannedCompletionTime 计划完成时间
   * @param {String} correctionManager 整改负责人
   * @param {String} correctionManagerPhone 整改负责人电话
   * 隐患解决情况
   * @param {String} latentDangerResult 隐患解决情况
   * @param {String} latentDangerReport 事故隐患报告
   * @param {String} latentDangerProgrammeReport 事故隐患治理方案
   * @param {String} actualFinishTime 实际完成时间
   * @param {String} acceptanceCheckManager 整改验收负责人
   * @param {String} acceptanceCheckManagerPhone 整改验收负责人电话
   * 拍摄图片/视频
   * @param {String} imageUrl 图片
   */
  save(data) {
    return this.request({
      method: 'POST',
      url: '/smart/smart-app/km/km_point_save',
      data
    })
  }

  /**
   * @description: 巡查记录
   * @author lsr
   * @date 2021.04.27
   * @param {String} gridCode 网格编码
   * @param {String} companyCode 单位编码
   * @param {String} companyType 单位类型
   * @param {String} startTime 开始时间
   * @param {String} endTime 结束时间
   * @param {String} inspectionResult 安全隐患
   */
  record({ gridCode, companyCode, companyType, startTime, endTime, inspectionResult }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/company/record_list',
      params: {
        gridCode,
        companyCode,
        companyType,
        startTime,
        endTime,
        inspectionResult
      }
    })
  }
}

class VisitApi extends HTTP {
  /**
   * @description: 人员列表
   * @author lsr
   * @date 2021.04.28
   * @param {String} labelType 标签类型
   * @param {String} labelCode 标签编码
   */
  list({ labelType, labelCode }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/person/list',
      params: {
        labelType,
        labelCode
      }
    })
  }

  /**
   * @description: 人员走访上报
   * @author lsr
   * @date 2021.04.29
   * @param {String} gridCode 网格编码
   * @param {String} interviewee 被走访人员（被访人）
   * @param {String} idCard 证件号
   * @param {String} labelCode 标签编码
   * @param {String} intervieweeDetail 走访记录
   * @param {String} imageUrl 图片
   */
  save({ gridCode, interviewee, idCard, labelCode, intervieweeDetail, imageUrl }) {
    return this.request({
      method: 'POST',
      url: '/smart/smart-app/person/save',
      data: {
        gridCode,
        interviewee,
        idCard,
        labelCode,
        intervieweeDetail,
        imageUrl
      }
    })
  }

  /**
   * @description: 人员列表
   * @author lsr
   * @date 2021.04.29
   * @param {String} idCard 标签编码
   */
  check({ idCard }) {
    return this.request({
      method: 'GET',
      url: '/smart/smart-app/person/check',
      params: {
        idCard
      }
    })
  }
}

class InspectVisitClass {
  constructor() {
    this.Init = new InitApi()
    this.Grid = new GridApi()
    this.Company = new CompanyApi()
    this.Visit = new VisitApi()
  }
}

const InspectVisit = new InspectVisitClass()

export default InspectVisit
